package com.me.libgdx_test;

import java.util.ArrayList;

//Starting Immunities and extra life
//mburn, poison, MRnorm, MRplus, PRnorm, PRplus, forget, blind, weakness, magicalAttack, undead, coward, banish, fStrike, static
//xattack_mods <= psn atk
//xcontracted_mods <= lvlup
//ximmune_mods <= everything else

//Level up and starting attr mods
//Levelup: health, attack, mana
//Starting: health, attack, mana
	
//General atk and defense for class
//Pwr Boost: physical, magical, all
//Resist: physical, magical, all
//Dodge Rate:
//DblHit Rate:
//Vision modifier:
//Ending score modifier
	
//Modifiers when potions are used
//Potion Restore: health, mana
//Potion Use: 10% chance to give 1 exp, gives 5 gold per lvl, nxt hit +30% dmg
//Potion Pickup: converts mana potion to health potion
	
//Modifiers for when shroud is restored
//Shroud Restore: health, mana, cure disease chance
//Shroud visibility enemy: +8% atk each enemy seen, +5 health for each living enemy
//Shroud visibility over enemy/spell: can see monsters equal lower level, can see all spells
//Shroud removal around enemy: +20% dblhit/dodge, first strike
	
//Modifiers for what happens when spells are used/destroyed
//Spell Cost Modifiers: teleport 6 mana, +2 cost all spells, manaspark half mana, endwall 1 mana, -1 all spells
//Spell Hit Modifiers: teleported enemy poisoned, summons special shops from affinity, 10% dmg returned as mana
//Spell Cast Modifiers: +1 gold endwall, grumpkins level 2, no attack spells, totems add +2 health/mana as well, heals 1.5 per mana used,
//  Spells use 8% max health down to 1 health, 2 health per lvl for wall destruction
//Spell Destroy Modifier: raises upper bounds of attack range by 20%, 5% death gaze chance, 5% life steal
	
//Modifiers for pickup/structure frequency
//Pickup frequency: +33% items on map, spell frequency
//Structure frequency: +2 stores, +6 stores, No altars

//Modifiers for when structures are used
//Altar piety: double gain
//Structure modifier: 50% discount shops, stores free

//Modifiers for when things are picked up
//Blood Pool Bonuses: 5 pools extra life, heal 10%, 4 gold, increase random levelup bonuses
//General pickups: +5 from attack pickup, mana item converts to health item
	
//Modifiers for atk, hit, kill, and death
//Attack modifier: 1 hit KO monsters lower level, 25% damage monsters higher level, 25% to all nearby enemies, hits raise atk by 12%,
//	10% change turning enemy into potion, atks between 70%-110%, 10% chance to turn enemy into wall, atks poison enemy, +25% enemy atk,
//  killing magical enemy restores 50% health, 200% dmg to undead, atks require 1 gold, 25% atk vs. living, -25% vs undead, +1 player atk,
//  -1/2 gold, x2.5 gold added to dmg, adds difference between mana and health to attack, +50% dmg monsters same lvl, adds 1.5 mana to dmg,
//	drains 1/2 mana, 5% life steal, +75% damage when health below 25%
//Defense modifier: does 1 magic damage per level when hit
//Kill modifier: 10% damage next hit, +1 gold per monster lvl, 10% max mana, first strike, +1 exp, +20 gold
//Death modifier: Does 300% damage after death, Cannot die with full health

//Modifiers for each time the player moves:
//Movement modifier: steps lower attack by 1/2%

//Modifiers for each starting enemy:
//Enemy modifier: all enemies cowards, all enemies gain level, all enemies gain life

//There are so many things that the classes do. This is my attempt to organize them by category...
public class ClassPlayerClassModifiers {
	ArrayList<ClassCharacterModDungeon> attack_mods;
	ArrayList<ClassCharacterModDungeon> contracted_mods;
	ArrayList<ClassCharacterModDungeon> immune_mods;
	ClassPlayerAttrMod playerAttMod;
	ClassPlayerPotionMod playerPotionMod;
	ClassPlayerShroudMod playerShroudMod;
	ClassPlayerSpellMod playerSpellMod;
	ClassPlayerPickupStructureMod playerPickupStructureMod;
	ClassPlayerPickupMod playerPickupMod;
	ClassPlayerAttackMod playerAttackMod;
	ClassPlayerEnemyMod playerEnemyMod;
	ClassPlayerStepMod playerStepMod;
	ClassPlayerClassModifiers(
			ClassDungeonMods[] mods,
			ClassPlayerSituationMods playerSituationMods,
			ClassPlayerAttrMod playerAttMod,
			ClassPlayerPotionMod playerPotionMod,
			ClassPlayerShroudMod playerShroudMod,
			ClassPlayerSpellMod playerSpellMod,
			ClassPlayerPickupStructureMod playerPickupStructureMod,
			ClassPlayerPickupMod playerPickupMod,
			ClassPlayerAttackMod playerAttackMod,
			ClassPlayerEnemyMod playerEnemyMod,
			ClassPlayerStepMod playerStepMod){
		this.attack_mods = new ArrayList<ClassCharacterModDungeon>();
		this.contracted_mods = new ArrayList<ClassCharacterModDungeon>();
		this.immune_mods = new ArrayList<ClassCharacterModDungeon>();
		for(ClassDungeonMods mod:mods){
			this.attack_mods.add(new ClassCharacterModDungeon(mod,playerSituationMods.attack.contains(mod.Name)));
			this.contracted_mods.add(new ClassCharacterModDungeon(mod,playerSituationMods.contract.contains(mod.Name)));
			this.immune_mods.add(new ClassCharacterModDungeon(mod,playerSituationMods.immune.contains(mod.Name)));
		}
		this.playerAttMod = playerAttMod;
		this.playerPotionMod = playerPotionMod;
		this.playerShroudMod = playerShroudMod;
		this.playerSpellMod = playerSpellMod;
		this.playerPickupStructureMod = playerPickupStructureMod;
		this.playerPickupMod = playerPickupMod;
		this.playerAttackMod = playerAttackMod;
		this.playerEnemyMod = playerEnemyMod;
		this.playerStepMod = playerStepMod;
	}
}
